#pragma once

#ifndef _ParticleSystem_h_
#define _ParticleSystem_h_

#include "BulletParticle.h"
#include "Explosion.h"
#include "Particle.h"
#include "Smoke.h"
#include "../../Framework/DrawableGameComponent.h"

#include <list>

namespace MyGame {

using namespace Framework;
using namespace std;

class ParticleSystem :
            public DrawableGameComponent {
public:
    ParticleSystem(Game* game);
    virtual ~ParticleSystem(void);
    BulletParticle* GetBulletParticle() const;
    Explosion* GetExplosion() const;
    Smoke* GetSmoke() const;
    void Add(Particle* particle);
    virtual void Draw(FLOAT timeDelta);
    virtual void Initialize();
    virtual void LoadContent();
    void Remove(Particle* particle);
    virtual void Update(FLOAT timeDelta);
private:
    BulletParticle* bulletParticle;
    Explosion* explosion;
    list<Particle*>* particles;
    Smoke* smoke;
};

}

#endif
